// 实现对多种请求方式的响应和参数的处理
import express from 'express';

// 实例化 app 对象
const app = express();
// 设置模板引擎
app.set("view engine", "ejs");
// 设置模板文件的存放目录
app.set("views", "./views");
// 设置 body 解析器
app.use(express.urlencoded({ extended: true }));

// 定义路由
// 参数传递：
// path: 路径传参
//   定义路径参数，在路径中使用冒号(:)表示，如 /student/:id, 其中 id 为路径参数
//   req.params 对象中包含了路径参数的键值对
//   GET、POST、PUT、DELETE 请求的路径参数可以通过 req.params 对象获取
// query: 查询字符串传参
//   定义查询字符串参数，在路径中使用问号(?)表示，如 /student?id=1, 其中 id 为查询字符串参数
//   req.query 对象中包含了查询字符串参数的键值对
//   GET、POST、PUT、DELETE 请求的查询字符串参数可以通过 req.query 对象获取
// body: 请求体传参
//   form 表单提交的请求体参数可以通过 req.body 对象获取
//   req.body 对象中包含了请求体参数的键值对
//   POST、PUT、DELETE 请求的请求体参数可以通过 req.body 对象获取
app.get('/', (req, res) => {
    const { name, age } = req.query;
    res.render("methods", { name, age });
});
app.post("/student/:id/:act", (req, res) => {
    const { id, act } = req.params;
    const { name, age } = req.query;
    const { username, password } = req.body;
    res.send(`接收到 POST 请求，
        path 参数 id 的值为 ${id}, act 的值为 ${act}, 
        query 参数 name 的值为 ${name}, age 的值为 ${age}, 
        body 参数 username 的值为 ${username}, password 的值为 ${password}`);
});
app.put("/student", (req, res) => {
    res.send("接收到 PUT 请求!");
});
app.delete("/student", (req, res) => {
    res.send("接收到 DELETE 请求!");
});
// 启动服务器
app.listen(3000, () => {
    console.log("Server running on port 3000");
})